import Vue from 'vue';
import wx from "weixin-js-sdk"; // 微信JS - Sdk
let jsSdkAPIs = ['getLocation'];
const WeixinJsSDK = {
	init: function(param) { // 外部引用初始化签名方法
		if (!param) return
		if (param.APIs) {
			jsSdkAPIs = param.APIs
		}
		if (param.callback) {
			this.callback = param.callback
		}
		WeixinJsSDK.sign()
	},
	sign: function() { // 请求后端接口获取签名参数
		const pageUrl = location.href.split('#')[0];
		Vue.prototype.$u.api.setWxJsSdk({
			thisUrl: pageUrl
		}).then((res) => {
			if (res.code === 200) {
				WeixinJsSDK.initAPIs(res.data);
			}
		}).catch((err) => {
			console.log(err)
		});
	},
	initAPIs: function(param) { // 获取签名参数成功，config验证权限
		wx.config({
			debug: false,
			appId: param.appId,
			timestamp: param.timeStamp,
			nonceStr: param.nonceStr,
			signature: param.signature,
			jsApiList: jsSdkAPIs,
		});

		wx.ready(
			function() { // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
				wx.checkJsApi({ // 判断当前客户端版本是否支持指定JS接口
					jsApiList: jsSdkAPIs, // 需要检测的JS接口列表，所有JS接口列表见附录2,
					success: function(res) {
						if (typeof WeixinJsSDK.callback == 'function') {
							WeixinJsSDK.callback()
							wx.getLocation({
								type: 'gcj02',
								success: (res) => {
									console.log(res);
									longitude.value = res.longitude
									latitude.value = res.latitude
									console.log('jssdk获取的位置:', res.longitude, res.latitude)

								},
								cancel: (err) => {
									console.error("您已禁止获取位置信息")
								}
							});
						}
						// 以键值对的形式返回，可用的api值true，不可用为false
						// 如：{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
					}
				});
			});
		wx.error(function(
			res) { // config信息验证失败会执行error函数，如签名过期导致验证失败具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。
		});

	}

}
export default WeixinJsSDK;